// var str = ")((()()))((((())(()()())))";
var str = "({[]})";
function test(str) {
  const map = new Map();
  map.set("[", "]");
  map.set("{", "}");
  map.set("(", ")");

  var stack = [];

  //   for (var i = 0; i < s.length; i++) {
  //     const item = s[i];
  //     //入栈
  //     if (item === "(" || item === "[" || item === "{") {
  //       stack.push(item);
  //     } else {
  //       //出栈
  //       const topItem = stack.pop();
  //       if (
  //         (item === "]" && topItem !== "[") ||
  //         (item === "}" && topItem !== "{") ||
  //         (item === ")" && topItem !== "(")
  //       ) {
  //         return false;
  //       }
  //     }
  //   }
  //   return stack.length === 0;

  for (var i = 0; i < str.length; i++) {
    const item = str[i];
    //入栈
    if (map.has(item)) {
      stack.push(item);
    } else {
      //出栈
      const topItem = stack.pop();
      console.log("==>", topItem);
      if (map.get(topItem) !== item) {
        return false;
      }
    }
  }
  return stack.length === 0;
}

console.log(test(str));

// const map = new Map();
// map.set("[", "]");
// map.set("{", "}");
// map.set("(", ")");

// console.log(map);

// console.log(map.has("{"));
// console.log(map.get("}"));
